package com.echo.im.storage.task.service;


import com.echo.im.storage.task.model.TaskEntity;

import java.util.List;

/**
 * 任务仓库接口，用于处理任务的查询和消息发送状态的更新
 *
 * @author echo
 * @description 任务服务仓储接口
 * @create 2024-04-06 10:51
 */
public interface TaskRepository {

    /**
     * 查询不需要发送消息的任务列表
     *
     * @return 不需要发送消息的任务实体列表
     */
    List<TaskEntity> queryNoSendMessageTaskList();

    /**
     * 发送消息给指定的任务
     *
     * @param taskEntity 需要发送消息的任务实体
     */
    void sendMessage(TaskEntity taskEntity);

    /**
     * 更新任务的消息发送状态为已完成
     *
     * @param userId     接收消息的用户ID
     * @param messageId  发送的消息的ID
     */
    void updateTaskSendMessageCompleted(String userId, String messageId);

    /**
     * 更新任务的消息发送状态为失败
     *
     * @param userId     接收消息的用户ID
     * @param messageId  发送失败的消息的ID
     */
    void updateTaskSendMessageFail(String userId, String messageId);

}
